package com.example.mvpdemo;

import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentActivity;

import com.example.mvpdemo.simple1.LoginPresnter;
import com.example.mvpdemo.simple1.LoginView;
import com.example.mvpdemo.simple2.LoginPresnter2;
import com.example.mvpdemo.simple2.LoginView2;
import com.example.mvpdemo.simple3.LoginPresnter3;
import com.example.mvpdemo.simple3.LoginView3;
import com.example.mvpdemo.simple4.LoginPresnter4;
import com.example.mvpdemo.simple4.LoginView4;
import com.example.mvpdemo.simple5.LoginPresnter5;
import com.example.mvpdemo.simple5.LoginView5;
import com.example.mvpdemo.simple5.base.BaseActivity5;

//public class MainActivity extends AppCompatActivity implements LoginView { //simple1
//public class MainActivity extends AppCompatActivity implements LoginView2 { //simple2
//public class MainActivity extends AppCompatActivity implements LoginView3 { //simple3
//public class MainActivity extends AppCompatActivity implements LoginView4 { //simple4
public class MainActivity extends BaseActivity5<LoginView5, LoginPresnter5> implements LoginView5 { //simple5 较为完善的MVP框架 可直接使用
//public class MainActivity extends FragmentActivity { //simple6 运行simple6时需将oncreat函数一下程序全部屏蔽


/***************************************************************************************************************************************/
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
/***************************************************************************************************************************************/



//
//    public void buttonLoginOnClick(View view) {
//        LoginPresnter loginPresnter = new LoginPresnter(this);
//        loginPresnter.login("","");
//    }
//
//    @Override
//    public void onLoginResult(String ret) {
//        Toast.makeText(MainActivity.this, ret, Toast.LENGTH_SHORT).show();
//    }

    /* 完成了最基本的MVP框架
    * 但是Presnter没有与Activity绑定 当Activity退出后还可能相应回调
    * 故需要将Presnter与Activity进行绑定 ↓↓↓ */
    /*************************************************************************************/

//    LoginPresnter2 loginPresnter;
//    public void buttonLoginOnClick(View view) {
//        loginPresnter = new LoginPresnter2();
//        loginPresnter.attachView(this);
//        loginPresnter.login("","");
//    }
//
//    @Override
//    public void onLoginResult(String ret) {
//        Toast.makeText(MainActivity.this, ret, Toast.LENGTH_SHORT).show();
//    }
//
//    @Override
//    protected void onDestroy(){
//        super.onDestroy();
//        if(this.loginPresnter != null)
//        {
//            this.loginPresnter.detachView();
//        }
//    }

    /* 完成了Presnter与Activity的绑定
     * 将Presnter进行抽象 使Presnter与Activity的绑定在父类BasePresnter中完成 ↓↓↓ */
    /*************************************************************************************/

//    LoginPresnter3 loginPresnter;
//    public void buttonLoginOnClick(View view) {
//        loginPresnter = new LoginPresnter3();
//        loginPresnter.attachView(this);
//        loginPresnter.login("","");
//    }
//
//    @Override
//    public void onLoginResult(String ret) {
//        Toast.makeText(MainActivity.this, ret, Toast.LENGTH_SHORT).show();
//    }
//
//    @Override
//    protected void onDestroy(){
//        super.onDestroy();
//        if(this.loginPresnter != null)
//        {
//            this.loginPresnter.detachView();
//        }
//    }

    /* 完成了Presnter的抽象
     * 但是Presnter父类的View是写死的
     * 利用泛型 将View进行抽象 ↓↓↓ */
    /*************************************************************************************/

//    LoginPresnter4 loginPresnter;
//    public void buttonLoginOnClick(View view) {
//        loginPresnter = new LoginPresnter4();
//        loginPresnter.attachView(this);
//        loginPresnter.login("","");
//    }
//
//    @Override
//    public void onLoginResult(String ret) {
//        Toast.makeText(MainActivity.this, ret, Toast.LENGTH_SHORT).show();
//    }
//
//    @Override
//    protected void onDestroy(){
//        super.onDestroy();
//        if(this.loginPresnter != null)
//        {
//            this.loginPresnter.detachView();
//        }
//    }
    /* 完成了View抽象
     * 但是Activity中的绑定较为冗余
     * 将Activity进行抽象 并利用泛型 绑定不同的View ↓↓↓ */
    /*************************************************************************************/

    public void buttonLoginOnClick(View view) {
        getPresnter().login("","");
    }

    @Override
    public LoginPresnter5 creatPresnter() {
        return new LoginPresnter5();
    }

    @Override
    public LoginView5 creatView() {
        return this;
    }

    @Override
    public void onLoginResult(String ret) {
        Toast.makeText(MainActivity.this, ret, Toast.LENGTH_SHORT).show();
    }
    /* 至此已完成了MVP框架的完整构建 如需在此基础上添加帧布局Fragment 可参考simple6 */
    /*************************************************************************************/
}